Computers and computer-based devices, e.g., PDAs (personal digital assistants), external drives, etc., collectively referred to herein as computing devices, have the capability of running files that are downloaded from one computing device to another. Such downloaded files include but are not limited to audio files including, music and/or speech files, video files, including movies and portions of movies, and gaming files.
Files, and more generally, items, which can be files, portions of files, etc., downloaded from one computing device to another generally must be synced in order for them to execute properly on the downloaded computing device. Such synchronization refers to the need for keeping multiple copies of an item coherent between the computing devices. Synchronization is performed by various sync engines operating on computing devices that engage in the transfer of items, such as, but not limited to, desktop computers, laptop computers, PDAs and external hard drives.
In existing synchronization applications, or sync engines, the items requiring synchronization may also need to undergo one or more preliminary operations or tasks before synchronization. Such preliminary tasks include, but are not limited to, downloading the item from a third-party web site or computing device, such as an on-line store, transcoding the item to, e.g., a different streaming rate or content format, and acquiring a license for proper execution of the item. These preliminary, or pre-sync, tasks can be complex and lengthy, impacting the performance of the sync engine. When multiple items are queued for syncing between two computing devices the performance of a sync engine can decline exponentially, resulting in a significant corrosion of the end-user's experience and satisfaction.
Thus, it would be advantageous to employ an adaptable task management sync engine and processes that supports parallel processing of pre-sync tasks for two or more items queued for synchronization. Moreover it is desirable to optimize sync performance and enhance the utilization of system resources on the computing device executing the sync engine by automatically adjusting pre-sync task execution loads based on monitored system resource usage. Automatic execution load adjustment, or sync engine scalability, can enhance the performance of the sync engine executing on a current computing device and can also support optimal performance of the same sync engine running on alternative computing devices.